﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Estrutura;


namespace Banco
{

    /// <summary>
    /// Summary description for BD_Aluno_evento
    /// </summary>
    public class BD_Aluno_evento
    {
        #region variaveis_globais

        acessaDB.conectaDBMSSQLServer sqlServer = new conectaDBMSSQLServer();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Aluno_evento()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
        }
        public BD_Aluno_evento(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public System.Data.DataSet _retorna_Aluno_evento(
                                                string ALUNO_EVENTO_ID,
                                                string ALUNO_ID,
                                                string EVENTO_ID,
                                                string ALV_DATAADESAO,
                                                string ALV_VALORPAGO
                                                )
        {

            if (string.IsNullOrEmpty(ALUNO_EVENTO_ID)) ALUNO_EVENTO_ID = "''";
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "''";
            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "''";
            if (string.IsNullOrEmpty(ALV_DATAADESAO)) ALV_DATAADESAO = "''";
            if (string.IsNullOrEmpty(ALV_VALORPAGO)) ALV_VALORPAGO = "''";

            string sql = "SELECT " +
                                  "ALUNO_EVENTO.ALUNO_EVENTO_ID, " +
                                  "ALUNO_EVENTO.ALUNO_ID, " +
                                  "ALUNO_EVENTO.EVENTO_ID, " +
                                  "ALUNO_EVENTO.ALV_DATAADESAO, " +
                                  "ALUNO_EVENTO.ALV_VALORPAGO " +
                            "FROM ALUNO_EVENTO " +
                            "LEFT JOIN EVENTO ON EVENTO.EVENTO_ID = ALUNO_EVENTO.EVENTO_ID " +
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ALUNO_EVENTO.ALUNO_ID " +
                            "WHERE " +
                            "      (ALUNO_EVENTO.ALUNO_EVENTO_ID = " + ALUNO_EVENTO_ID + "  OR " + ALUNO_EVENTO_ID + " = '') AND " +
                            "      (ALUNO_EVENTO.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = '') AND " +
                            "      (ALUNO_EVENTO.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = '') AND " +
                            "      (ALUNO_EVENTO.ALV_DATAADESAO = " + ALV_DATAADESAO + "  OR " + ALV_DATAADESAO + " = '') AND " +
                            "      (ALUNO_EVENTO.ALV_VALORPAGO = " + ALV_VALORPAGO + "  OR " + ALV_VALORPAGO + " = '') ";

            return sqlServer.retornaDataSet(sql, conectionString);            

        }


        public List<ES_Aluno_evento> _obter_Aluno_evento(
                                                string ALUNO_EVENTO_ID,
                                                string ALUNO_ID,
                                                string EVENTO_ID,
                                                string ALV_DATAADESAO,
                                                string ALV_VALORPAGO
                                                )
        {

            if (string.IsNullOrEmpty(ALUNO_EVENTO_ID)) ALUNO_EVENTO_ID = "''"; else ALUNO_EVENTO_ID = Util.retonarAspas(ALUNO_EVENTO_ID + " % ");
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "''"; else ALUNO_ID = Util.retonarAspas(ALUNO_ID + " % ");
            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "''"; else EVENTO_ID = Util.retonarAspas(EVENTO_ID + " % ");
            if (string.IsNullOrEmpty(ALV_DATAADESAO)) ALV_DATAADESAO = "''"; else ALV_DATAADESAO = Util.retonarAspas(ALV_DATAADESAO + " % ");
            if (string.IsNullOrEmpty(ALV_VALORPAGO)) ALV_VALORPAGO = "''"; else ALV_VALORPAGO = Util.retonarAspas(ALV_VALORPAGO + " % ");

            string sql = "SELECT " +
                                  "ALUNO_EVENTO.ALUNO_EVENTO_ID, " +
                                  "ALUNO_EVENTO.ALUNO_ID, " +
                                  "ALUNO_EVENTO.EVENTO_ID, " +
                                  "ALUNO_EVENTO.ALV_DATAADESAO, " +
                                  "ALUNO_EVENTO.ALV_VALORPAGO " +
                            "FROM ALUNO_EVENTO " +
                            "LEFT JOIN EVENTO ON EVENTO.EVENTO_ID = ALUNO_EVENTO.EVENTO_ID " +
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ALUNO_EVENTO.ALUNO_ID " +
                            "WHERE " +
                            "      (ALUNO_EVENTO.ALUNO_EVENTO_ID = " + ALUNO_EVENTO_ID + "  OR " + ALUNO_EVENTO_ID + " = '') AND " +
                            "      (ALUNO_EVENTO.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = '') AND " +
                            "      (ALUNO_EVENTO.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = '') AND " +
                            "      (ALUNO_EVENTO.ALV_DATAADESAO = " + ALV_DATAADESAO + "  OR " + ALV_DATAADESAO + " = '') AND " +
                            "      (ALUNO_EVENTO.ALV_VALORPAGO = " + ALV_VALORPAGO + "  OR " + ALV_VALORPAGO + " = '') ";

            List<ES_Aluno_evento> lista = new List<ES_Aluno_evento>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Aluno_evento item = new ES_Aluno_evento();
                    item.ALUNO_EVENTO_ID = dr["ALUNO_EVENTO_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    item.EVENTO_ID = dr["EVENTO_ID"].ToString();
                    item.ALV_DATAADESAO = dr["ALV_DATAADESAO"].ToString();
                    item.ALV_VALORPAGO = dr["ALV_VALORPAGO"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public List<ES_Aluno_evento> _obter_Evento(
                                                
                                                string ALUNO_ID,
                                                string EVENTO_ID
                                                )
        {
            //Validar Inserção de Aluno
            if (ALUNO_ID == "NEW")
                return new List<ES_Aluno_evento>();

            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "0"; 
            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "0";
            if (ALUNO_ID == "0" && EVENTO_ID == "0")
                return new List<ES_Aluno_evento>();

            string sql = "SELECT  AE.ALUNO_EVENTO_ID, "+
		                 "           AE.ALUNO_ID, "+
		                 "           AE.EVENTO_ID, "+
		                 "           AE.ALV_DATAADESAO, "+
		                 "           AE.ALV_VALORPAGO, "+
		                 "           E.EVT_DESCRICAO, "+
		                 "           E.EVENTO_MODALIDADE_ID, "+
		                 "           EM.EVM_DESCRICAO, "+
		                 "           A.PESSOA_ID, "+
		                 "           DBO.FN_ALUNO_MATRICULAS (A.ALUNO_ID) MATRICULAS_ALUNO, "+
		                 "           P.PES_NOME "+
                         "FROM ALUNO_EVENTO AE "+
                         "INNER JOIN EVENTO E ON (E.EVENTO_ID = AE.EVENTO_ID) "+
                         "INNER JOIN EVENTO_MODALIDADE EM ON (EM.EVENTO_MODALIDADE_ID = E.EVENTO_MODALIDADE_ID) "+
                         "INNER JOIN ALUNO A ON (A.ALUNO_ID = AE.ALUNO_ID) " +
                         "INNER JOIN PESSOA P ON (P.PESSOA_ID = A.PESSOA_ID) " +
                         "WHERE " +
                         "      (AE.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = 0) AND " +
                         "      (AE.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = 0) ";

            List<ES_Aluno_evento> lista = new List<ES_Aluno_evento>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Aluno_evento item = new ES_Aluno_evento();
                    item.ALUNO_EVENTO_ID = dr["ALUNO_EVENTO_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    item.EVENTO_ID = dr["EVENTO_ID"].ToString();
                    item.ALV_DATAADESAO = dr["ALV_DATAADESAO"].ToString().Replace("00:00:00","").Trim();
                    item.ALV_VALORPAGO = dr["ALV_VALORPAGO"].ToString();
                    item.EVT_DESCRICAO = dr["EVT_DESCRICAO"].ToString();
                    item.EVENTO_MODALIDADE_ID = dr["EVENTO_MODALIDADE_ID"].ToString();
                    item.EVM_DESCRICAO = dr["EVM_DESCRICAO"].ToString();
                    item.PESSOA_ID = dr["PESSOA_ID"].ToString();
                    item.MATRICULAS_ALUNO = dr["MATRICULAS_ALUNO"].ToString();
                    item.PES_NOME = dr["PES_NOME"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }

        public ES_Aluno_evento _obter_Aluno_evento_by_id(
                                                        string ALUNO_EVENTO_ID,
                                                        string ALUNO_ID = "", 
                                                        string EVENTO_ID = ""
                                                        )
        {

            if (string.IsNullOrEmpty(ALUNO_EVENTO_ID)) ALUNO_EVENTO_ID = "0";
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "0";
            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "0";

            string sql = "SELECT " +
                                  "ALUNO_EVENTO.ALUNO_EVENTO_ID, " +
                                  "ALUNO_EVENTO.ALUNO_ID, " +
                                  "ALUNO_EVENTO.EVENTO_ID, " +
                                  "ALUNO_EVENTO.ALV_DATAADESAO, " +
                                  "ALUNO_EVENTO.ALV_VALORPAGO " +
                            "FROM ALUNO_EVENTO " +
                            "LEFT JOIN EVENTO ON EVENTO.EVENTO_ID = ALUNO_EVENTO.EVENTO_ID " +
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ALUNO_EVENTO.ALUNO_ID " +
                            "WHERE " +
                            "      (ALUNO_EVENTO.ALUNO_EVENTO_ID = " + ALUNO_EVENTO_ID + "  OR " + ALUNO_EVENTO_ID + " = 0) AND"+
                            "      (ALUNO_EVENTO.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = 0) AND" +
                            "      (ALUNO_EVENTO.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = 0) ";

            ES_Aluno_evento item = new ES_Aluno_evento();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    item.ALUNO_EVENTO_ID = dr["ALUNO_EVENTO_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    item.EVENTO_ID = dr["EVENTO_ID"].ToString();
                    item.ALV_DATAADESAO = dr["ALV_DATAADESAO"].ToString();
                    item.ALV_VALORPAGO = dr["ALV_VALORPAGO"].ToString();

                }
                return item;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public void _inserir_Aluno_evento(                                                
                                                string ALUNO_ID,
                                                string EVENTO_ID,
                                                string ALV_DATAADESAO,
                                                string ALV_VALORPAGO
                                                )
        {

            string sql = " INSERT INTO ALUNO_EVENTO " +
                         "      ( " +
                         "          ALUNO_ID, " +
                         "          EVENTO_ID, " +
                         "          ALV_DATAADESAO, " +
                         "          ALV_VALORPAGO  " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarAspas(ALUNO_ID, true) + ", " +
                              Util.retonarAspas(EVENTO_ID, true) + ", " +
                              Util.retonarAspas(Util.formataData(ALV_DATAADESAO), true) + ", " +
                              Util.retonarAspas(ALV_VALORPAGO, true) +
                 "      )";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Aluno_evento(
                                                string ALUNO_EVENTO_ID,
                                                string ALUNO_ID,
                                                string EVENTO_ID,
                                                string ALV_DATAADESAO,
                                                string ALV_VALORPAGO
                                                )
        {

            string sql = " UPDATE ALUNO_EVENTO SET " +
                         "      ALUNO_ID = " + Util.retonarAspas(ALUNO_ID, true) + ", " +
                         "      EVENTO_ID = " + Util.retonarAspas(EVENTO_ID, true) + ", " +
                         "      ALV_DATAADESAO = " + Util.retonarAspas(ALV_DATAADESAO, true) + ", " +
                         "      ALV_VALORPAGO = " + Util.retonarAspas(ALV_VALORPAGO, true) +
                         " WHERE ALUNO_EVENTO_ID =  " + ALUNO_EVENTO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Aluno_evento(string ALUNO_EVENTO_ID)
        {
            //Executar PROCEDURE que devolve quantidade solicitada ao maerial, antes de excluir o registro

            string sql = "EXECUTE [dbo].[SP_REMOVE_ALUNO_EVENTO] " + ALUNO_EVENTO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
